#ifndef __QMC5883_H
#define __QMC5883_H

#include <stdint.h>
#include "stm32f1xx_hal.h"
#define QMC5883_DEV (0x2C<<1)   //i2c地址


/*********************************************************************/ 
#define QMC5883P_REG_CONF1 0x0A     //模式控制寄存器地址
                                    // MOD模式（0x0A的第0、1位）
#define QMC5883P_MODE 0x03          //0x03连续模式,
//#define QMC5883P_MODE 0x00        //0x00待机
/***************************************************************///10011101
                                    // ODR输出速率（0x09的第2、3位）
//#define QMC5883P_ODR (0x00 << 2)   //10HZ   (0x00 << 2)
//#define QMC5883P_ODR (0x01 << 2)   //50HZ   (0x01 << 2)
//#define QMC5883P_ODR (0x02 << 2)   //100HZ  (0x02 << 2)
#define QMC5883P_ODR (0x03 << 2)     //200HZ	(0x03 << 2)
/***************************************************************/
//#define QMC5883P_OSR1 (0x01 << 4)    //OSR1 采样滤波（0x09的第4、5位）越大波纹越小
//#define QMC5883P_OSR1 (0x01 << 4   //4G  (0x00 << 4)
#define QMC5883P_OSR1 (0x00 << 4)    //8G  (0x01 << 4)
/***************************************************************/
                            //OSR2 采样滤波（0x09的第6、7位）越大波纹越小
//#define QMC5883P_OSR2 (0x00 << 6)           
//#define QMC5883P_OSR2  (0x01 << 6)           
//#define QMC5883P_OSR2  (0x10 << 6)           
#define QMC5883P_OSR2  (0x03 << 6)           

#define CONF1  QMC5883P_MODE | QMC5883P_ODR | QMC5883P_OSR1 | QMC5883P_OSR2//数据拼接成8位 
/*********************************************************************/
#define QMC5883P_REG_CONF2  0x0B             //控制寄存器2地址
#define QMC5883P_RESET   0X00   
#define QMC5883P_RNG     (0X03<<4)    
#define QMC5883P_SOFT_RST   (0x00 << 6)      //软复位，清除所有寄存器的值，0x01复位，0x00不复位

#define CONF2 QMC5883P_RESET | QMC5883P_RNG |(0X00<<4) |QMC5883P_SOFT_RST       //数据拼接
/*********************************************************************/

uint8_t QMC5883_Init(void);//初始化
uint8_t QMC5883_GetData(float *QMC_data) ;//读数据

/*********************************************************************/




#endif
